# 迭代器：可迭代的对象 1、生成器 2、 元组、列表、集合、字典、字符串
"""
如何判断一个对象是否可迭代？
    isinstance(x，Iterable)

迭代器：
    1、迭代是访问集合元素的一种方式，迭代器是一个记录遍历位置的对象
    2、迭代器对象从集合元素第一个元素开始迭代，指导所有的元素被访问完结束。
    3、迭代器只能往前不能后退
    4、可以被next() 函数调用并不断返回下一值的对象成为迭代器：Iterator
问题：
    1、可迭代的是不是就是迭代器？
        生成器也是迭代器、
        列表是可迭代的不是迭代器
    2、列表变成迭代器
生成器和迭代器:
    迭代器是一个大的范围
    生成器是迭代器的一种；
    列表、元组、字符串可以通过函数iter()转换变成迭代器

"""
from collections.abc import Iterable

lst = [1, 43, 5, 2, 5, 23, 32]
f = isinstance(lst, Iterable)
print(f)

str = "abc"

f = isinstance(str, Iterable)
print(f)

int_num = 9

f = isinstance(int_num, Iterable)
print(f)

g = [x for x in range(10)]

f = isinstance(g, Iterable)
print(f)

# print(next(lst))  # TypeError: 'list' object is not an iterator

# 将列表变成一个迭代器

new_lst = iter(lst)
print(next(new_lst))
print(next(new_lst))

print("生成器和迭代器".center(30, '#'))
